package com.lxw.multidb.modules.file;

import cn.tannn.cat.file.sdk.api.UploadFile;
import cn.tannn.cat.file.sdk.bean.FileIndex;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * 文件操作
 *
 * @author <a href="https://t.tannn.cn/">tan</a>
 * @date 2024/7/4 下午2:29
 */
public interface DynFileOperateService {

    /**
     * 上传
     *
     * @param uploaded UploadDTO
     * @return Object
     * @throws IOException Exception
     */
    FileIndex upload(UploadFile uploaded) throws IOException;


    /**
     * 获取文件输入流
     *
     * @param filePath 文件路径
     * @return InputStream
     * @throws Exception Exception
     */
    InputStream getInputStream(String filePath) throws Exception;

    /**
     * 加载指定路径下的直接子节点
     *
     * @param prefix  前缀路径（空字符串表示根目录）
     * @param options 过滤和排序选项，不能为null
     * @return 子节点列表（已过滤、已排序）
     */
    List<TreeNode> loadChildren(String prefix, TreeOptions options);
}
